home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_200 / 208_01 / e.h < prev    next >
Text File  |  1987-10-11  |  9KB  |  255 lines

  1. /*
  2. HEADER:        CUG208;
  3. TITLE:        'e' for CP/M68K
  4. VERSION:    1.48+
  5.  
  6. DESCRIPTION:    "a screen editor";
  7.  
  8. KEYWORDS:    editor;
  9. SYSTEM:        CP/M68K, V1.2;
  10. FILENAME:    e/e.h
  11. WARNINGS:    "the default value is for systems with 128K bytes
  12.          of memory or more";
  13. SEE-ALSO:    cpm68k.c, e68k.doc, CUG VOL 133;
  14. AUTHORS:    G.N.Gilbert('e'), J.W.Haefner(for DeSmet C on MSDOS and UNIX)
  15. CODER:        Yoshimasa Tsuji
  16. COMPILERS:    DRI C(Alcyon C) for CP/M68K;
  17. */
  18. /*
  19.     PURPOSE: include file for e
  20. */
  21. /* ------- begin of re-compilation options -----    */
  22. #define YES 1
  23. #define NO 0
  24. #define CPM68K    1
  25. #define MSDOS    0
  26.  
  27. #define LARGE    1    /* if you can allow 64K byte arrays */
  28.  
  29. /* -------- end of re-compilation options ----------- */
  30. #define VERSION "4.8b"
  31. #include <stdio.h>
  32. #include <ctype.h>
  33.  
  34. typedef short bool;
  35.  
  36. #ifdef CPM68K
  37. #define FILELEN 18    /*max length of file name (uud:ffffffff.xxx\0)*/
  38. #else
  39. #define FILELEN 50
  40. #endif
  41.  
  42. #define INBUFLEN 20    /*length of type-in buffer */
  43. #define CURSORWAIT 1000
  44. #define LLIM 255    /*max length of a line*/
  45. #define FLIM 80        /*max length of find/alter string*/
  46.  
  47. #define FAIL -1
  48. #define PREV -2
  49.  
  50. #define HISTLEN 40    /*history stack of commands for undoing */
  51. #define HISTINSERT 1    /*type of command on history stack */
  52. #define HISTDELETE 2
  53. #define HISTREPLACE 3
  54.  
  55. #define SWIDTH 79    /*screen size*/
  56. #define SHEIGHT 23
  57. #define OFFWIDTH 20    /*horizontal scroll increment*/
  58. #define PAGEOVERLAP 4    /*overlap between pages with UP,DOWN-PAGE*/
  59. #define HELPLINES 8    /*top line number when help menu is on display */
  60.  
  61. #define FNPOS 8        /*status line - position of file name*/
  62. #define LNPOS 23    /*        position of line number*/
  63. #define EMPOS 32    /*        position of error message*/
  64. #define WAITPOS 32    /*        position of cursor when searching/reading*/
  65. #define REPPOS 50    /*        position of "Replace?" message*/
  66.  
  67. #define BACKSP 0x08    /*backspace*/
  68. #define ENDFILE 0x1a    /*CP/M end of text file mark */
  69. #define CTRL 0x1f    /*last control char.*/
  70. #define PARBIT 0x80    /*parity bit used as a flag by testkey() */
  71. #define NOPARITY 0x7f    /*mask to strip parity bit */
  72. #define NKEYS 32    /*number of key codes*/
  73. #define GOTOLEN 6    /*approx number of chars in control code string for
  74.                 cursor addressing*/
  75.  
  76.     /*internal key codes (recommended key assignments in brackets)*/
  77.  
  78. #define LEADIN 0    /*lead in chararacter to key codes -
  79.                 ignored, but following key code parity set*/
  80. #define DOWNKEY 1    /*cursor down */
  81. #define UPKEY    2    /*cursor up*/
  82. #define LEFTKEY 3    /*cursor left*/
  83. #define RIGHTKEY 4    /*cursor right*/
  84. #define RIGHTWKEY 5    /*cursor right one word (D) */
  85. #define LEFTWKEY 6    /*cursor left one word (S) */
  86. #define EOLKEY 7    /*cursor to end of line (E) */
  87. #define BOLKEY 8    /*cursor to beginning of line (B) */
  88. #define UPPAGE 9    /*scroll up a page (W) */
  89. #define DOWNPAGE 10    /*scroll down a page (Z) */
  90. #define BOFKEY 11    /*cursor to beginning of file (U) */
  91. #define HOMEKEY 12    /*cursor to end of file (HOME) */
  92. #define DELLEFT 13    /*delete char to left of cursor (DEL) */
  93. #define DELRIGHT 14    /*delete char under cursor (G) */
  94. #define DELLNKEY 15    /*delete cursor line (Y) */
  95. #define DELWDKEY 16    /*delete word to right of cursor (T) */
  96. #define JUMPKEY 17    /*jump to (X) */
  97. #define CRSTILL 18    /*insert newline after cursor (N) */
  98. #define QUITKEY 19    /*quit (Q) */
  99. #define ENVIRKEY 20    /*edit and file context (C) */
  100. #define FINDKEY 21    /*find (F) */
  101. #define ALTERKEY 22    /*alter (A) */
  102. #define BLOCKKEY 23    /*block operations (O) */
  103. #define RDFILEKEY 24    /*read a file (P) */
  104. #define REPKEY 25    /*repeat last find/alter (R) */
  105. #define HELPKEY 26    /*display help menu (V) */
  106. #define UNDOKEY 27    /*undo history of commands (\) */
  107. #define TAB 28        /*tab (I)*/
  108. #define RETRIEVE 29    /*retrieve last name etc entered here (R)*/
  109. #define CR 30        /*return (M)*/
  110. #define ESCKEY 31    /*the magic escape key (ESC)*/
  111.  
  112. #define BRIDIM '|'    /*char placed in e's message strings to start/stop
  113.                 dim (half-intensity) display */
  114.  
  115. # if LARGE
  116. #define MAXSLOTS 256    /*virtual memory constants*/
  117. #define MAXMEMSLOTS 64
  118. # else
  119. #define MAXSLOTS 128    /*virtual memory constants*/
  120. #define MAXMEMSLOTS 20
  121. # endif
  122.  
  123. #define PAGESIZE 1024
  124.  
  125. #define FREE 0
  126.  
  127. #define INUSE 1
  128. #define NOTAVAIL -1
  129. #define MAXINT 32767
  130. #define NOFILE (MAXINT)
  131. #define ABSOLUTE 0
  132. #define UNKNOWN (MAXINT)
  133.  
  134. struct addr {
  135.     short page;
  136.     int moffset;
  137.     };            /*address of text of each line*/
  138.  
  139. struct histstep {        /*command history stack for undoing */
  140.     struct addr histp;    /*address of text modified by command*/
  141.     int histline;        /*line number of modified text*/
  142.     short histtype;        /*type of command (insert,delete,replace)*/
  143.     short histcomm;        /*number of command modulo 256 */
  144.     };
  145. extern    char *strcpy(), *strcat();
  146. char *getline();
  147.  
  148.  
  149. /* global variables for 'e'
  150.  */
  151.  
  152. # ifdef DEF
  153. #define extern
  154. # endif
  155.  
  156. extern struct addr *tp;        /*address of text of each line*/
  157.  
  158. extern int allocp;            /*location of next free in newpage */
  159. extern int pageloc[MAXSLOTS];        /*current location of each page*/
  160. extern int usage[MAXMEMSLOTS];        /*records usage of in memory slots*/
  161. extern char *slotaddr[MAXMEMSLOTS];    /*memory addr of start of each in memory slot*/
  162. extern bool dskslots[MAXSLOTS];    /*is disk slot free*/
  163. extern short slotsinmem;    /*max no. of slots available in memory*/
  164. extern short tppages;        /*no. of pages used to hold text pointers*/
  165. extern short newpage;        /*page no of page being filled with text*/
  166. extern char *npaddr;        /*base of slot holding newpage*/
  167. extern int clock;        /*counter for least recently used paging*/
  168.  
  169. extern int pagefd;            /*file descriptor of paging file*/
  170. extern char pagingfile[FILELEN];    /*name of paging file*/
  171.  
  172. #ifdef CPM68K
  173. #define PATHLEN 6
  174. #else
  175. #define PATHLEN 30
  176. #endif
  177.  
  178. extern char pagingdir[PATHLEN];        /*directory to put paging file in*/
  179. extern char curdir[PATHLEN];    /*currently logged in (default) directory */
  180.  
  181. extern unsigned ncommand;    /*count of commands executed since startup*/
  182. extern int goodline;    /*line number we know we can display */
  183.  
  184. extern struct histstep    history[HISTLEN];
  185. extern int histptr;            /*pointer into history stack*/
  186. extern short histcnt;            /*number of commands on stack*/
  187. extern short storehist;        /*commands only stored on history when true*/
  188.  
  189. extern FILE *textfp;            /*io buffer for file being edited*/
  190.  
  191. extern short cursorx, cursory;        /*current position of cursor*/
  192. extern char tran[NKEYS];    /*translation table from external to internal
  193.                 key codes*/
  194. extern bool isdim;            /*last char was in dim*/
  195. extern int lastl;            /*number of last line of text*/
  196. extern int lastread;        /*last line actually read to date*/
  197. extern bool goteof;            /*true when eof of file being edited*/
  198. extern int cline;            /*current line*/
  199. extern char text[LLIM];        /*buffer for current line of text*/
  200. extern int charn;        /*position of current char in current line*/
  201. extern bool altered;    /*if YES, current line has been altered by edits*/
  202.  
  203. extern short pfirst, plast;    /*top and bottom line displayed on screen*/
  204. extern int topline;        /*first line on screen for text*/
  205. extern short offset;            /*first col. to display on screen*/
  206. extern short lastoff;    /*offset last time resetcursor() was called*/
  207. extern bool blankedmess; /*message area has been blanked, not overwritten*/
  208.  
  209. extern char inbuf[INBUFLEN];        /*input buffer for typeahead*/
  210. extern short  inbufp;            /*pointer to next free in inbuf*/
  211.  
  212. #if DEF
  213. bool autoin=YES;    /*auto indent  [YES/NO]*/
  214. bool backup=NO;    /*make ".BAK" file [YES/NO]*/
  215. bool trail=NO;    /*don't strip trailing blanks [YES/NO]*/
  216. bool helpon=NO;    /*start with help menu on [YES/NO]*/
  217. short tabwidth=8;    /*tab stops every n cols [number]*/
  218. bool displaypos=YES;    /*display line:column at top of screen*/
  219. bool blockscroll=YES;    /*don't scroll whole page, just current line*/
  220. bool hilight=NO;    /*highlight current line*/
  221.  
  222. # else
  223. extern bool autoin;            /*do auto indentation*/
  224. extern bool backup;        /*at end, old version becomes file.bak*/
  225. extern bool helpon;            /*display help menu*/
  226. extern short tabwidth;            /*width between tabstops*/
  227. extern bool trail;        /*don't chop trailing blanks from text lines*/
  228. extern bool displaypos;        /*display line:col at top of screen*/
  229. extern bool blockscroll;        /*horizon